/**
 * @author luguoxiang
 * @date 2022/9/18
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
import { createI18n } from 'vue-i18n';
import { createStorage } from '@/soar';
import zhCNRef from './lang/zh-CN';
import enRef from './lang/en-US';

export const zhCN = zhCNRef;
export const en = enRef;

const storage = createStorage('@:');

/**
 * 本地语言信息
 */
const localLanguages: { [k: string]: any } = {
  'zh-cn': { name: '中文', locale: zhCN },
  en: { name: 'English', locale: en },
};

/**
 * 远程语言
 */
const remotes = {};

const i18n = createI18n({
  // 默认语言
  locale: 'zh-cn',
  // 关闭控制台警告
  silentTranslationWarn: true,
  silentFallbackWarn: true,
  // 设置语言环境
  messages: {
    'zh-cn': zhCN,
  },
});

/**
 * 切换语言
 * @param language
 */
export function switchLanguage(language: string) {
  const local = localLanguages[language];
  storage.put('lang', language);
  // 加载远程
  // 合并
  // @ts-ignore
  i18n.global.locale = language;
  i18n.global.setLocaleMessage(language, local.locale);
}

/**
 * 获取语言选项
 */
export function getLanguageList(): Promise<any> {
  const result: { [k: string]: any } = {};
  for (const key in localLanguages) {
    result[key] = { value: key, label: localLanguages[key].name };
  }
  return new Promise<void>((resolve) => {
    // 加载远程语言
    const remotes = {};
    // @ts-ignore
    resolve({ ...result, ...remotes });
  });
}

/**
 * 翻译
 * @param text
 */
export function $i18n(text: string) {
  return i18n.global.t(text);
}

export default i18n;
